iT邦幫忙

2023 iThome 鐵人賽

DAY 29
1
Software Development

為你自己學 Ru.....st系列 第 29

[為你自己學 Rust] 建立桌面應用程式 - Tauri

  • 分享至 

  • xImage
  •  

對一般只寫 JavaScript 的工程師來說,想要寫一個桌面應用程式,目前比較簡單的選擇就是 Electron 了。只要會 HTML、CSS 跟 JavaScript 寫出一個簡單的頁面,然後就能用 Electron 把頁面包裝成原生的桌面應用程式,簡單粗暴。其實用 Electron 包裝的應用程式不少,各位網站工程師常在用的編輯器 VSCode 就是其中一個。

不過 Electron 常被人嘴的地方,就是它的包裝檔案比較大(事實上它就是把一個小型的 Chrome 給包進去能小到哪裡去),效能也比較差。

Rust 雖然一開始的定位是用來撰寫系統程式,但這個世界的總不會如我們預期的發展,因為 Rust 的效能跟安全性(還有潮),所以有些人把 Rust 拿來寫網站或 GUI 的應用程式,甚至有發展出了一款 Electron 的替代方案 - Tauri,用 Tauri 打包出來的應用程式的體積會小的多,而且還能跨平台。

網址:https://tauri.app/

我們就動手來試試看吧

我電腦本機的環境是 Node 18,並且使用 npm 做為 package manager,其它版本的 Node 或其它常見的 package manager 都有相對應的指令。根據官網的建議,第一步是先建立一個 Tauri 的專案:

$ npm create tauri-app@latest
npm create tauri-app@latest
✔ Project name · hello-tauri
✔ Choose which language to use for your frontend · TypeScript / JavaScript - (pnpm, yarn, npm, bun)
✔ Choose your package manager · npm
✔ Choose your UI template · Vanilla
✔ Choose your UI flavor · JavaScript

Template created! To get started run:
  cd hello-tauri
  npm install
  npm run tauri dev

過程中會問你專案想要它叫什麼名字(我用 hello-tauri),再來要用什麼 package manager 以及程式語言,就依個人能力及喜好選擇即可,應該一下子就能建立好專案。

接著,可用各位熟悉的文字編輯工具開啟這個專案,別忘了執行 npm install 把相依的套件安裝一下,最後在專案底下執行:

$ npm run tauri dev

第一次執行這個指令的時候會自動幫你安裝並編譯 Rust 那邊的程式,會花稍微久一點的時候,順利跑完就會看到這個畫面:

為你自己學 Rust

裡面的那些字跟圖片怎麼來的?你只要點開 src 目錄就會看到一些熟悉的面孔,HTML、CSS 跟 JavaScript,就是它們。你只要會寫一般的網頁互動程式,你就有能力改的動這個檔案。所以我很簡單的做了個簡單的 BMI 計算機(是有多愛 BMI 計算機),完整專案可以從我的 GitHub Repo 下載。

GitHub Repo: https://github.com/kaochenlong/bmi-tauri-app

你會發現真的就是寫一些網頁的互動程式而已,基本上你可以不需要動到 src-tauri 目錄裡的東西,但你現在去開那些 .rs 檔案看看,已經不會太陌生了。整個寫好之後的樣子大概會像這樣:

為你自己學 Rust

發佈版本

如果都寫的差不多,就可以準備來 build 正式版本,準備發佈了。build 的指令是 npm run tauri build,但第一次執行的話會出現錯誤提醒:

$ npm run tauri build

> hello-tauri@0.0.0 tauri
> tauri build

Error You must change the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.

它提醒你要去改一下 identifier,就在 src-tauri 目錄裡。找到 identifier 那段,把原本的預設值改掉,再執行一次就能重新發佈了。

安裝 build 出來的產物應該難不倒大家了。

為你自己學 Rust

當然上面這個範例是完全沒有修改應用程式的「外觀」,更多細節設定請參閱 Tauri 網站說明。以結果來說,一樣的內容我用 Electron 包起來的應用程式大概 150MB 左右,但用 Tauri 打包打的不到 10MB,啟動速度的體感也比用 Electron 包的應用程式再快一點點 :)


上一篇
[為你自己學 Rust] Rust 與 WebAssembly
下一篇
[為你自己學 Rust] 網站開發框架 Actix
系列文
為你自己學 Ru.....st30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言